import CryptoJS from 'crypto-js'
import { getServiceEnvConfig } from '~/.env-config'

const { cryptoSecret } = getServiceEnvConfig(import.meta.env)
//加密密钥，如果是空字符串，表示不加密。注意：更改密钥会导致之前的数据解析失败！！！
const defaultCryptoSecret = cryptoSecret

/**
 * 加密数据
 * @param data - 数据
 */
export function encrypt(data: any, secret: string | undefined = defaultCryptoSecret) {
    const newData = JSON.stringify(data)
    if (!secret) return newData
    return CryptoJS.AES.encrypt(newData, secret).toString()
}

/**
 * 解密数据
 * @param cipherText - 密文
 */
export function decrypt(
    cipherText: string,
    secret: string | undefined = defaultCryptoSecret
) {
    if (!secret) return JSON.parse(cipherText)
    const bytes = CryptoJS.AES.decrypt(cipherText, secret)
    const originalText = bytes.toString(CryptoJS.enc.Utf8)
    if (originalText) {
        return JSON.parse(originalText)
    }
    return null
}

/**
 * md5加密
 * @param data
 */
export function md5(data: string): string {
    return CryptoJS.MD5(data).toString()
}
